#include "./Routeur.h"



void routeurInit(Routeur * monRouteur,int id, char* url, char* port)
{
	strcpy(monRouteur->url,port);
	strcpy(monRouteur->port,port);
	monRouteur->id=id;
}
void routeurDemarrer(Routeur* monRouteur)
{
	int taille=sizeof(Message);
	int pipefd[2];
	if (pipe(pipefd)==-1) {
		perror("pipe");
		exit(2);
	}

	pid_t serveur;
	serveur=fork();

	if (serveur<0) {
		perror("fork");
		exit(1);
	}

	if(serveur!=0) {
		close(pipefd[1]);
		printf("C:DEMARRAGE DU CLIENT\n");
		Message m;
		//size_t nbytes;
		ssize_t bytes;
		while(1)
		{
			bytes = read(pipefd[0],&m,taille);
			while (bytes!=taille)
			{
				bytes = read(pipefd[0],&m,taille);
			}

			Client c;
			printf("C: AFFICHAGE M\n");

			decrypte((&m)->contenu,_clef(monRouteur->id));
			messageEpurer(&m);
			messageSauvegarder(&m,(char*)"messageAuRouteurEp.txt");
		//	messageAfficher(&m);
			c.communiquer(message_destinataire(&m),message_port(&m),m);
		}
	}

	else {
		close(pipefd[0]);
		printf("S:DEMARRAGE DU SERVEUR\n");
		Serveur s;
		s.demarrer(monRouteur->port);
		while(1)
		{
			Message m=s.connexion();
			//messageAfficher(&m);
			ssize_t bytes_written;
			while(s.getnouveauMessage()!=1)
			{
				//on ne fait rien
			}

			printf("S: recu un message et va le communiquer au client par le pipe\n");

			bytes_written = write(pipefd[1],&m,taille);
		}
		s.eteindre();


	}
}

